package com.eco.fanliapp.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.eco.fanliapp.entity.GoodsFree;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

public interface GoodsFreeMapper extends BaseMapper<GoodsFree> {
    /**
     * 根据商品Id删除数据库的记录,goods_free
     *
     * @param goodsId
     */
    int deleteByGoodsId(Integer goodsId);

    int deleteByFreeGoodsId(String goodsId);

    /**
     * 根据主键删除数据库的记录,goods_free
     *
     * @param id
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * 新写入数据库记录,goods_free
     *
     * @param record
     */
    int insert(GoodsFree record);

    /**
     * 动态字段,写入数据库记录,goods_free
     *
     * @param record
     */
    int insertSelective(GoodsFree record);

    /**
     * 根据指定主键获取一条数据库记录,goods_free
     *
     * @param id
     */
    GoodsFree selectByPrimaryKey(Integer id);

    /**
     * 动态字段,根据主键来更新符合条件的数据库记录,goods_free
     *
     * @param record
     */
    int updateByPrimaryKeySelective(GoodsFree record);

    /**
     * 根据主键来更新符合条件的数据库记录,goods_free
     *
     * @param record
     */
    int updateByPrimaryKey(GoodsFree record);

    /**
     * 根据商品id查询免单商品详情
     *
     * @param goodsId
     * @return
     */
    GoodsFree selectByGoodsId(String goodsId);

    List<GoodsFree> selectByGoodsIds(HashMap<String, Object> hashMap);

    /**
     * 查询所有
     *
     * @return
     */
    List findAll(HashMap<String, Object> hashMap);


    /**
     * 根据平台查询商品信息
     *
     * @return
     */
    List<GoodsFree> selectByGoodsPlatform(Integer goodsPlatform);

    /**
     * 根据商品id或者商品名称模糊查询
     *
     * @param goodsIdOrGoodsName
     * @return
     */
    List<GoodsFree> selectByGoodsIdOrGoodsName(String goodsIdOrGoodsName);

    /**
     * 动态字段,根据商品id来更新符合条件的数据库记录,goods_free
     *
     * @param record
     */
    int updateByGoodsIdSelective(GoodsFree record);


    /**
     * @param goodsId
     * @param goodsFreeStage
     * @return
     */
    int updateGoodsFreeStageByGoodsId(@Param("goodsId") String goodsId, @Param("goodsFreeStage") Integer goodsFreeStage);

    /**
     * @param numIid
     * @param goodsStatus
     * @param goodsFreeStage
     * @return
     */
    GoodsFree findGoodsId(@Param("numIid") Long numIid, @Param("goodsStatus") Integer goodsStatus, @Param("goodsFreeStage") Integer goodsFreeStage);

    /**
     * @param numIid
     * @return
     */
    GoodsFree findGoodsIdAll(@Param("numIid") Long numIid);

    /**
     * @param goodsFree
     * @return
     */
    int updateByGoodsFree(GoodsFree goodsFree);

    /**
     * @param id
     * @return
     */
    int updateTotalOrdersByGoodsId(Integer id);

    /**
     * @param id
     * @return
     */
    int updateInvalidOrdersByGoodsId(Integer id);

    /**
     * @param id
     * @return
     */
    int updateTotalRetureAmountByGoodsId(Integer id);

    /**
     * @param l
     * @return
     */
    List<Integer> findCreateTime(long l);

    /**
     * @param list
     * @return
     */
    int updateGoodsStatusById(List<Integer> list);

    /**
     * @return
     */
    List<GoodsFree> findGoodsStatus();

    /**
     * @param topSerialNumber
     * @return
     */
    List<GoodsFree> findFreeSerialMax(int topSerialNumber);

    /**
     * @param hashMap
     * @return
     */
    int updateSerial(HashMap<String, Object> hashMap);

    /**
     * 查询免单商品（商品未失效）
     *
     * @return
     */
    List selectAllGoodsFree();

    /**
     * 查询免单商品
     *
     * @return
     */
    List selectGoodsFree();

    /**
     * 根据商品id更新商品状态
     *
     * @param goodsFree
     * @return
     */
    int updateGoodsStausByGoodsFree(GoodsFree goodsFree);

    int updateGoodsStaus(String goodsId);

    /**
     * 查询有效的免单商品
     *
     * @return
     */
    List<GoodsFree> selectGoodsFreeValidList();

    List<String> selectGoodsFreeByLimit(@Param("end") Integer end);

    Integer countGoodsFree();
}